package exceptions; 
 // : exceptions/FullConstructors.java

class MyException extends Exception {
    public MyException() {}

    public MyException(String msg) {
        super(msg);
    }
}


public class FullConstructors {
    public static void f() throws MyException {
        System.out.println("Throwing MyException from f()");
        throw new MyException();
    }

    public static void g() throws MyException {
        System.out.println("Throwing MyException from g()");
        throw new MyException("Originated in g()");
    }

    public static void main(String[] args) {
        try {
            f();
        } catch (MyException e) {
            e.printStackTrace(System.out);
        }
        try {
            g();
        } catch (MyException e) {
            e.printStackTrace(System.out);
        }
    }
} /*
   * Output:
   * Throwing MyException from f()
   * MyException
   * at FullConstructors.f(FullConstructors.java:11)
   * at FullConstructors.main(FullConstructors.java:19)
   * Throwing MyException from g()
   * MyException: Originated in g()
   * at FullConstructors.g(FullConstructors.java:15)
   * at FullConstructors.main(FullConstructors.java:24)
   */// :~
